#ifndef ADMINGUI_H
#define ADMINGUI_H

#include <QAction>
#include <QFileDialog>
#include <QFrame>
#include <QHBoxLayout>
#include <QLabel>
#include <QLineEdit>
#include <QListWidget>
#include <QMenu>
#include <QMessageBox>
#include <QPushButton>
#include <QScrollArea>
#include <QSplitter>
#include <QStackedWidget>
#include <QTableWidget>
#include <QTableWidgetItem>
#include <QTextEdit>
#include <QToolButton>
#include <QVBoxLayout>
#include <QWidget>
#include <memory>
#include <string>

// 前置声明
class QWebEngineView;

class AdminGUI : public QWidget {
  Q_OBJECT
public:
  explicit AdminGUI(QWidget *parent = nullptr);
  ~AdminGUI();

  // 设置当前管理员ID
  void setAdminId(const QString &adminId);

  // 事件过滤器
  bool eventFilter(QObject *watched, QEvent *event) override;

signals:
  // 用于通知其他组件状态变化的信号
  void apiConfigChanged();
  void userStatusChanged(const QString &userId, bool active);

public slots:
  // 刷新各页面数据
  void refreshApiManagement();
  void refreshUserManagement();

private slots:
  // 左侧菜单项点击事件
  void onApiManagementClicked();
  void onUserManagementClicked();

  // API管理页面事件
  void onAddApiKeyClicked();
  void onEditApiKeyClicked();
  void onDeleteApiKeyClicked();

  // 用户管理页面事件
  void onAddUserClicked();
  void onEditUserClicked();
  void onDeleteUserClicked();
  void onBlockUserClicked();

private:
  // UI设置方法
  void setupUI();
  void setupSidebar();
  void setupHeader();
  void setupMainContent();
  void setupSignalsAndSlots();

  // 创建各管理页面
  QWidget *createApiManagementPage();
  QWidget *createUserManagementPage();

  // 辅助方法
  void loadStyleSheet();
  void setActiveSidebarItem(QWidget *item);
  QWidget *createSidebarItem(const QString &text, const QString &iconClass);

  // 数据操作
  void loadApiKeys();
  void saveApiKeys();
  void loadUsers();
  void saveUsers();


  //
  std::string api_k;
  // 基本UI组件
  QWidget *mainWidget_;
  QHBoxLayout *mainLayout_;

  // 左侧边栏组件
  QWidget *sidebarWidget_;
  QVBoxLayout *sidebarLayout_;
  QLabel *logoLabel_;
  QWidget *apiManagementBtn_;
  QWidget *userManagementBtn_;
  QWidget *activeSidebarItem_;

  // 右侧内容区组件
  QWidget *contentWidget_;
  QVBoxLayout *contentLayout_;

  // 顶部工具栏组件
  QWidget *headerWidget_;
  QHBoxLayout *headerLayout_;
  QToolButton *menuToggleBtn_;
  QLabel *pageTitleLabel_;
  QToolButton *adminProfileBtn_;

  // 主内容区组件
  QStackedWidget *mainContentStack_;
  QWidget *apiManagementPage_;
  QWidget *userManagementPage_;

  // API管理页面组件
  QTableWidget *apiKeysTable_;
  QPushButton *addApiKeyBtn_;
  QPushButton *editApiKeyBtn_;
  QPushButton *deleteApiKeyBtn_;

  // 用户管理页面组件
  QTableWidget *usersTable_;
  QPushButton *addUserBtn_;
  QPushButton *editUserBtn_;
  QPushButton *deleteUserBtn_;
  QPushButton *blockUserBtn_;

  // 数据
  QString adminId_;
};

#endif // ADMINGUI_H